package br.com.agenda.server.proxy;

import java.rmi.RemoteException;
import java.rmi.server.UnicastRemoteObject;
import java.util.List;

import br.com.agenda.negocio.entity.Agenda;
import br.com.agenda.negocio.entity.IAgenda;
import br.com.agenda.negocio.entity.IConvite;
import br.com.agenda.negocio.entity.IEvento;
import br.com.agenda.negocio.entity.IUsuario;
import br.com.agenda.server.servidor.IServicoServidor;

public class Dispatcher<T> extends UnicastRemoteObject implements IDispatcher<T> {
	
	private static final long serialVersionUID = 4341435988270457878L;
	
	private IServicoServidor<?> servicoServidor;

	public Dispatcher(IServicoServidor<?> servico) throws RemoteException {
		this.servicoServidor = servico;
	}
	/**
	 * @throws RemoteException 
	 * 
	 */
	

	@Override
	public void adicionaAgenda(IAgenda agenda) throws RemoteException {
		servicoServidor.adicionaAgenda(agenda);
		
	}
	
	public IAgenda getAgenda(String nome)throws RemoteException {
		return servicoServidor.localizarAgenda(nome);
	}
	
	@Override
	public void adicionaUsuario(IUsuario usuario) throws RemoteException {
		servicoServidor.adicionaUsuario(usuario);
		
	}
	
	@Override
	public List<IUsuario> getUsuarios() throws RemoteException {
		return servicoServidor.getUsuarios();
		
	}
	
	@Override
	public List<IUsuario> getContatos(String propietario) throws RemoteException {
		return servicoServidor.getContatos(propietario);
		
	}
	
	public boolean existeContato(String contato) throws RemoteException {
		return servicoServidor.existeContato(contato);
	}
	
	@Override
	public IUsuario getContato(String nomeContato) throws RemoteException {
		return servicoServidor.getContato(nomeContato);
	}
	@Override
	public void enviarConvites(IEvento evento) throws RemoteException {
		servicoServidor.enviarConvites(evento);
		
	}
	@Override
	public void respostaConvite(IUsuario usuario, IConvite convite, boolean conviteConfirmado)throws RemoteException {
		servicoServidor.respostaConvite(usuario,convite,conviteConfirmado);
	}
	@Override
	public void marcarEventoNosContatos(IEvento evento) throws RemoteException {
		servicoServidor.marcarEventoNosContatos(evento);
		
	}
	
	
	
}
